package com.smfx.yxt.service;

import java.util.List;

import com.smfx.yxt.model.TeacherInfo;
import com.smfx.yxt.page.Page;
import com.smfx.yxt.reqVo.BaseQueryVO;
import com.smfx.yxt.reqVo.TeacherReqVO;
import com.smfx.yxt.view.TeacherInfoView;

public interface ITeacherService {
	
	List<TeacherInfo> selectList();
	
	int insertSelective(TeacherInfo record);

	TeacherInfo selectForWapLogin(TeacherInfo record);
	
	/**
	 * 分页查询教师列表
	 * @param page
	 * @return
	 */
	List<TeacherInfo> selectByPage(Page<TeacherInfo> page);
	
	/**
	 * 根据教师id查询教师信息
	 * @param id
	 * @return
	 */
	TeacherInfo selectById(Integer id);
	
	/**
	 * 通过微信openid查询教师信息
	 * @param openid
	 * @return
	 */
	TeacherInfo selectByOpenid(String openid);
	
	/**
	 * 通过组合参数查询教师信息
	 * @param vo
	 * @return
	 */
	List<TeacherInfo> selectByParam(TeacherReqVO vo);
	/**
	 * 查询用于教师通讯录
	 * @param vo
	 * @return
	 */
	List<TeacherInfo> selectForChatByParam(TeacherReqVO vo);
	/**
	 * 修改教师信息
	 * @param record
	 * @return
	 */
	int updateById(TeacherInfo record);
	
	/**
	 * 解绑微信
	 * @param record
	 * @return
	 */
	int updateUnbindWechat(TeacherInfo record);
	
	/**
	 * 更新教师积分
	 * @param teacher
	 * @return
	 */
	int updatePoints(Integer id, Float point);
	
	/**
	 * 查询主课老师带课班级数量
	 * @param openid
	 * @return
	 */
	int selectClazzCountByOpenid(String openid);
	/**
	 * 查询主课老师带课班级列表
	 * @param openid
	 * @return
	 */
	List<TeacherInfoView> selectClazzListByOpenid(String openid);
	
	/**
	 * 查询是否是主班老师
	 * @param openid
	 * @return
	 */
	int selectCountByOpenid(String openid);
	
	/**
	 * 查询老师是否是班主任
	 * @param teacherId
	 * @return
	 */
	boolean isClassTeacher(Integer teacherId);
	
	/**
	 * 查询主班老师信息
	 * @param openid
	 * @return
	 */
	List<TeacherInfoView> selectClassForTeacher(BaseQueryVO vo);
	
	/**
	 * 关键词搜索
	 * @param reqVO
	 * @return
	 */
	List<TeacherInfo> selectByKeyword(TeacherReqVO reqVO);
	
	/**
	 * 查询分组内的老师
	 * @param groupId
	 * @return
	 */
	List<TeacherInfo> selectListForOrganizeGroup(Integer groupId);
	/**
	 * 根据职位查询老师列表
	 * @param list
	 * @return
	 */
	List<TeacherInfo> selectListByPositionIds(String positionIds);
	/**
	 * 根据维修类别查询维修人员
	 * @param repairType
	 * @return
	 */
	List<TeacherInfo> selectListByRepairType(String repairType);
	List<TeacherInfo> selectListForAll(TeacherReqVO vo);
	/**
	 * 根据ids查询老师列表
	 * @param list
	 * @return
	 */
	List<TeacherInfo> selectListByIds(List<String> list);
	
	List<TeacherInfo> selectAll(Integer schoolId);
	/**
	 * 查询主科老师
	 * @param vo
	 * @return
	 */
	List<TeacherInfo> selectListForMainSubject(TeacherReqVO vo);
	
	int updateBatchPosition(List<TeacherInfo> list);
}
